#ifndef SSICLOUD_VS_MAINTAIN_H
#define SSICLOUD_VS_MAINTAIN_H

#include "ssicloud_item_object.h"
#include "ssicloud_list_object.h"

namespace ssicloud {
/**
 * @brief The VSMaintain class
 *  维保服务 数据项，获取服务端记录的数据项
 * @note 验证 -- OK
 */
class VSMaintain : public ItemObject<MaintainNode>
{
public:
    VSMaintain();

    //! 获取数据
    bool requestAll();

    //! 分析数据
    int genResult(NetBuffer *data);

    //! 调试信息
    void profile();
};

/**
 * @brief The VSMaintainSet class
 *  用户设置 下一次保养里程
 * @warning 不支持设置接口
 */
class VSMaintainSet : public ItemObject<VSMaintainSetNode>
{
public:
    VSMaintainSet();

    //! 设置当前里程
    bool requestSetMile(int mile = 800);

    //! 分析数据
    int genResult(NetBuffer *data);

    //! 调试信息
    void profile();

private:
    char m_body[256];
};

/**
 * @brief The VSMaintainGetRemind class
 *  保养-获取保养提醒
 */
class VSMaintainGetRemind : public ItemObject<VSMaintainGetRemindNode>
{
public:
    VSMaintainGetRemind();

    //! 获取数据
    bool requestAll();

    //! 调试信息
    void profile();

protected:
    //! 分析数据
    int genResult(NetBuffer *data);
};

/**
 * @brief The VSMaintainRecordAdd class
 *  保养-保养登记
 */
class VSMaintainRecordAdd : public ItemObject<VSMaintainRecordAddNode>
{
public:
    VSMaintainRecordAdd();

    //! 长传保养等级记录
    //! maintainDate    保养日期    String    是
    //! actualMile    保养里程    Double    是
    //! itemType    保养项    Integer    是    1底盘2发动机
    bool requestAll(const char *maintainDate = "2022-01-14", double actualMile = 350000, int itemType = 2);

    //! 调试信息
    void profile();

protected:
    //! 分析数据
    int genResult(NetBuffer *data);

private:
    char m_body[256];
};

/**
 * @brief The VSMaintainRecordPage class
 *  保养-分页查询保养登记
 */
class VSMaintainRecordPage : public ListObject<VSMaintainRecordPageLNode>
{
public:
    VSMaintainRecordPage();

    //! 获取数据
    bool requestAll(const char *startDate = "2022-01-12",
                    const char *endDate = "2022-01-13",
                    int pageNum = 1, int pageSize = 10);

    //! 调试信息
    void profile();

protected:
    //! 分析数据
    int genResult(NetBuffer *data);

private:
    // request
    SFString m_startDate, m_endDate;
    SFString m_pageNum;
    SFString m_pageSize;
};


}

#endif // SSICLOUD_VS_MAINTAIN_H
